/**
 * promise 形式  getSetting
 */
export const getSetting = () => {
  return new Promise((resolve, reject) => {
    wx.getSetting({
      success: (result) => {
        resolve(result);
      },
      fail: (err) => {
        reject(err);
      },
    });
  });
};
/**
 * promise 形式  chooseAddress
 */
export const chooseAddress = () => {
  return new Promise((resolve, reject) => {
    wx.chooseAddress({
      success: (result) => {
        resolve(result);
      },
      fail: (err) => {
        reject(err);
      },
    });
  });
};

/**
 * promise 形式  openSetting
 */
export const openSetting = () => {
  return new Promise((resolve, reject) => {
    wx.openSetting({
      success: (result) => {
        resolve(result);
      },
      fail: (err) => {
        reject(err);
      },
    });
  });
};

/**
 *  promise 形式  showModal
 * @param {object} param0 参数
 */
export const showModal = ({ content }) => {
  return new Promise((resolve, reject) => {
    wx.showModal({
      title: "提示",
      content: content,
      success: (res) => {
        resolve(res);
      },
      fail: (err) => {
        reject(err);
      },
    });
  });
};

/**
 *  promise 形式  showToast
 * @param {object} param0 参数
 */
export const showToast = ({ title ,icon}) => {
    return new Promise((resolve, reject) => {
        wx.showToast({
            title,
            icon,
            duration: 1000,
            success: (res) => {
                resolve(res);
            },
            fail: (err) => {
                reject(err);
            },
        });
    });
};

/**
 * promise 形式的 getUserProfile
 * @param {objet}} desc  声明获取用户个人信息后的用途，后续会展示在弹窗中
 * @returns
 */
export const getUserProfile = ({ desc }) => {
  return new Promise((resolve, reject) => {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认
    // 开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: desc, // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        resolve(res);
      },
      fail: (err) => {
        reject(err);
      },
    });
  });
};
/**
 *  promise 形式的 navigateTo
 * 保留当前页面，跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。
 * @param {object} url  要跳转的非 tabbar 页面
 * @returns 
 */
export const navigateTo = ({ url }) => {
    return new Promise((resolve, reject) => {
        wx.navigateTo({
            url: url,
            success: (result) => {
                resolve(result);
            },
            fail: (err) => {
                reject(err);
            },
        });
    });
};
/**
 * promise 形式的 switchTab
 * 跳转到 tabBar 页面，并关闭其他所有非 tabBar 页面
 * @param {object} url 要跳转的 tabbar 页面
 * @returns 
 */
export const switchTab = ({ url }) => {
    return new Promise((resolve, reject) => {
        wx.switchTab({
            url: url,
            success: (result) => {
                resolve(result);
            },
            fail: (err) => {
                reject(err);
            },
        });   
    });
}

export const setClipboardData = ({ data }) => {
    return new Promise((resolve, reject) => {
        wx.setClipboardData({
            data,
            success: (res) => {
                showToast({ title: "复制成功" });
                resolve(res);
            },
            fail: (err) => {
                reject(err);
            },
        });
    })
}